using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using Cavendish.ParticleLibrary.Sdk;
using Cavendish.ParticleLibrary.Entities;
using Cavendish.ParticleLibrary.Sdk.Abstractions;

namespace Cavendish.UnitTests
{
	/// <summary>
	/// Testing for particles
	/// </summary>
	[TestFixture] 
	public class ParticleSdkTester
	{
		protected Proton proton;
		protected Neutron neutron;

		[SetUp]
		public void Init()
		{
			proton = new Proton();
			neutron = new Neutron();
		}

		[Test]
		public void MakeUps()
		{
			Assert.AreEqual("uud", proton.Makeup,"Proton quark makeup");
			Assert.AreEqual("udd", neutron.Makeup,"Neutron quark makeup");
		}

		[Test]
		public void Spins()
		{
			Assert.AreEqual(0.5, proton.Spin,"Proton Spin");
			Assert.AreEqual(0.5, neutron.Spin, "Neutron Spin");
		}

		[Test]
		[ExpectedException(typeof(ParticleImplementationException))]
		public void ImplementationNotExist()
		{
			int i = proton.Strangeness;
		}

	}
}
